package thread.ch03;

import java.util.HashSet;
import java.util.Set;

import thread.annotation.Immutable;

/**
 * 不可变对象永远是线程安全的。 只有满足以下状态，一个对象才是不可变的： 1. 它的状态不能在创建后再被修改 2. 所有域都是final类型 3.
 * 它被正确创建（创建期间没有发生this引用的逸出）
 * 
 * @author Edgar Zhang
 * 
 */
@Immutable
public final class ThreeStooges {

	private final Set<String> stooges = new HashSet<String>();

	public ThreeStooges() {
		stooges.add("Moe");
		stooges.add("Larry");
		stooges.add("Curly");
	}

	public boolean isStooge(String name) {
		return stooges.contains(name);
	}

}
